perm filename COMT.PAL[HAL,HE]6 blob sn#178865 filedate 1975-10-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	  Test of condition monitors
C00004 00003	  SMALL TEST OF ARITHMETIC
C00006 00004	  Test of graph structure:  calculators
C00009 00005	  Test of graph structure:  changers
C00010 ENDMK
C⊗;
;  Test of condition monitors

	XPRINT
	L45	;Say hello
	XCMMAK	
	20	;CM at 20
	L30	;Code at L30 for c-m
	XMVAR	;
	10	;X
	12	;y
	0
	XPUSH	;X ← L41
	L41
	XCHNGE	
	10
	XPUSH	;Y ← L41.5 (= 0)
	L41.5
	XCHNGE	
	12
	XCMENB	;Enable checker
	20
L32:	XGTVAL	;X ← X - 1
	10	;
	XCOPY	;
	0
	XPRNTS	;Say what X is
	XPUSH	;
	L43	;Push 1
	XSSUB	;Subtract
	XCHNGE	;
	10	;
	XGTVAL	;
	12	;Y=0?
	XJUMPC	;
	2	;
	L32	;If so, loop
	XCMDEST	;else get rid of checker
	20	;
	0
	XTERMINATE;and go away

L30:	XCMSKED	;Checker body
	XPRINT	;Say "."
	L46	;
	XGTVAL	;X≤0?
	10	;
	XJUMPC	;
	7	;if GT then jump
	L30	;
	XCMTRIG	;Yes.  trigger
	XPRINT
	L44	;Say "zero"
	XPUSH	;
	L41	;SET Y ← 10.0
	XCHNGE	;
	12	;
	XJUMP	;
	L30	;

;data area
L41:	41040	;10.0
	0
L41.5:	0	;0.0
	0
L42:	ASCIE </
	DECREMENTING/>
L43:	40200	;1.0
	0
L44:	ASCIE </
	ZERO/>
L45:	ASCIE </
	TEST OF CONDITION CHECKERS
/>
L46:	ASCIE </./>

;  SMALL TEST OF ARITHMETIC
COMMENT ⊗  Save the following for another time.

L1:	XMVAR
	10	;X
	12	;Y
	14	;Z
	16	;W
	0
	XPUSH	;X ← L103
	L103
	XCHNGE
	10
	XPUSH	;Y ← L105
	L105
	XCHNGE
	12
	XPUSH	;Z ← L107
	L107
	XCHNGE
	14

	XGTVAL	;W ← X . Y . Z
	10
	XGTVAL
	12
	XGTVAL
	14
L2:	XVMAKE
	XCHNGE
	16
	XPRINT	;
	A1	;
	XVARPRN	;
	16	;W
	XTERMINATE

L103:		;VECTOR(44.5, 44.5, 44.5, 2)
	41462
	0
	41462
	0
	41462
	0
	40400
	0

L105:		;VECTOR(10, 10, 10, 1)
	41040
	0
	41040
	0
	41040
	0
	40200
	0

L107:		;VECTOR(20, 20, 20, 1)
	41240
	0
	41240
	0
	41240
	0
	40200
	0
A1:	ASCIE /W = /
⊗  end of commented out portion
;  Test of graph structure:  calculators

COMMENT ⊗
	XMVAR
	20	;X
	22	;Y
	24	;Z
	26	;W
	0	;
	XPUSH	;X ← 1
	L1	;
	XCHNGE	;
	20	;
	XPUSH	;Y ← 1
	L1	;
	XCHNGE	;
	22	;
	XMCLC	;Z <= X + Y
	24	;
	L10	;code
	20	;neededs
	22	;
	0	;
	XMCLC	;W <= X + Y
	26	;
	L10	;code
	20	;neededs
	22	;
	0	;
	XMCLC	;W <= Z
	26	;
	L11	;code
	24	;neededs
	0	;
	XBREAK	;
	XGTVAL	;Print W
	26	;
	XPRNTS	;
	XKVAR	;
	20	;
	0	;
	XBREAK	;
	XKVAR	;
	22	;
	24	;
	26	;
	0	;
	XTERMINATE
L10:	XGTVAL	;X
	20	;
	XGTVAL	;Y
	22	;
	XSADD	;+
	XENDCLC	;
L11:	XGTVAL	;Z
	24	;
	XENDCLC	;
L1:	40200	;1
	0
⊗
;  Test of graph structure:  changers

COMMENT ⊗
	XMVAR
	20	;X
	22	;Y
	24	;Z
	26	;W
	0	;
	XPUSH	;X ← 1
	L1	;
	XCHNGE	;
	20	;
	XPUSH	;Y ← 1
	L1	;
	XCHNGE	;
	22	;
	XMCHG	;WHEN CHANGE X DO [Z ← NEW-OLD; PRINT Z]
	20	;
	L10	;code
	XMCHG	;WHEN CHANGE Z DO [PRINT Z]
	24	;
	L11	;code
	XPUSH	;X ← 10
	L2	;
	XCHNGE	;
	20	;
	XTERMINATE
L10:	XGTNEW	;
	XGTOLD	;
	XSSUB	;-
	XCOPY	;
	0
	XVALPRN	;
	XCHNGE	;
	24	;Z
	XTERMINATE
L11:	XGTVAL	;
	24	;Z
	XPRNTS	;
	XTERMINATE
L1:	40200	;1
	0
L2:	41040	;=10
	0
⊗